/***********************************************************************************
 * 文件名： mcu_timer.h
 * 版本： 2
 * 说明：
 * 		SC8P1715 的定时器外设驱动。使用说明见头文件。在 sc8p1715_config.h 文件中可配置初始状态。
 * 修改记录：
 * 	2021/04/28: 初版。 刘言。
 *  2022/01/21: 新增Tim2_Clr和Tim2_Value函数。 黄均铭。
***********************************************************************************/
#ifndef _MCU_TIMER_H_
#define _MCU_TIMER_H_

#include "mcu.h"

// Timer0初始化
// 初始化后立即运行
// 在配置文件中统一配置中断使能状态，调用 Mcu_Init 后生效。
// TIM0不支持自动重装载，可以调用 Tim0_Reload 进行手动重装载。
// TIM0不支持启停，将会一直运行。
#define Tim0_Init() \
{\
    OPTION_REG = (INT_EDG << 6)   \
            |(TIM0_CLK_SOURCE<<5) \
            |(TIM0_SE << 4) \
            |(TIM0_PAS<<3)/*预分频器分配*/   \
            |(TIM0_PS<<0);/* 预分频比例 */  \
    TMR0 = 256 - TIM0_CYCLE;    \
}

// 重装载，一般在中断中调用，用于周期定时
#define Tim0_Reload()   \
{\
    TMR0 = 256 - TIM0_CYCLE;\
}

// 获取 TIM0 的中断标志
#define Tim0_GetIntFlag()   T0IF

// 清除 TIM0 的中断标志
#define Tim0_ClrIntFlag()   T0IF=0


// Timer2初始化
// 在配置文件中统一初始化中断使能状态，调用 Mcu_Init 后生效。
// Timer2支持自动重装载
#define Tim2_Init() \
{\
    PR2 = TIM2_CYCLE;   \
    T2CON = (TIM2_OUTPS << 3)\
            |(TIM2_ON << 2)\
            |(TIM2_CKPS << 0);\
}

#define Tim2_GetIntFlag()   TMR2IF
#define Tim2_ClrIntFlag()   TMR2IF = 0

// 清除TIM2
#define Tim2_Clr()          TMR2 = 0

// 获取计数值
#define Tim2_GetValue()     TMR2

// 启动TIM2
#define Tim2_Run()          TMR2ON = 1

// 停止TIM2
#define Tim2_Stop()         TMR2ON = 0

#endif



